A processor (such as an embedded microprocessor) typically includes one or more caches that occupy a large percentage of the area of the processor. For example, approximately half of the total chip area of a StrongARM SA-110 processor is devoted to two 16 KB caches. Cache arrays are particularly susceptible to faults, and the tolerance of cache faults significantly affects the yield of processors that include caches.
Overview
Particular embodiments of the present invention may reduce or eliminate problems and disadvantages associated with processors having defective caches.
In one embodiment, a method for improving performance of a processor having a defective cache includes accessing first object code and generating second object code from the first object code. The generation of the second object code takes into account one or more locations of one or more defects in a cache on a processor such that one or more instructions in the second object code are written only to nondefective locations in the cache.
Particular embodiments of the present invention may provide one or more technical advantages. As an example and not by way of limitation, particular embodiments improve performance, e.g., speed up operation, of processors having defective caches. In particular embodiments, defect-aware code placement reduces performance degradation of a processor having a cache that is only partially good. Particular embodiments modify the placement of basic blocks, or functions, in an address space of a cache to reduce or even minimize the occurrence of cache misses in a defective cache. Particular embodiments may provide all, some, or none of these technical advantages. Particular embodiments may provide one or more other technical advantages, one or more of which may be readily apparent to those skilled in the art from the figures, descriptions, and claims herein.